Color transformation in 3D color space

ABSTRACT

A method, system and computer readable medium for transforming three dimensional (3D) color information into a color standard is described. A 3D cube defined by eight RGB color points representing the eight vertices of the 3D cube is stored. Each of the eight points represents one of the colors: red, yellow, white, magenta, blue, black, green and cyan. In addition, each of the eight points represents the difference between the capacity of a display and the color standard. The 3D cube is divided into six tetrahedrons and the tetrahedron corresponding to an input RGB pixel is selected. A 3×3 matrix based on the vertices of the selected tetrahedron is calculated. The 3×3 matrix is then multiplied by the components of the input RGB pixel to produce an output RGB pixel conforming to the color standard.

[0001] INVENTORS: Fritz LEBOWSKY Charles F. NEUGEBAUER

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates to the field of computer graphicsand, more specifically, to the field of color transformation.

[0004] 2. Description of Related Art

[0005] In recent years, the types of devices available for viewingimages has increased dramatically. Consumers view images on severaldifferent output devices such as monitors, displays, televisions,cameras, printers, and other electronic devices. Whereas the Cathode RayTube (CRT) used to be the standard device for viewing images, today auser can also purchase a Liquid Crystal Display (LCD) or a PlasmaDisplay Panel (PDP). The increasing variety of available devices,however, has produced a problem of color uniformity. Because of themechanical differences between the different types of devices, colorsare often displayed in different ways. That is, a CRT many timesdisplays the color red differently than an LCD. Moreover, a picturedisplayed on an LCD prints with different color uniformity on a printer.

[0006] The disparity between the manner in which different devicesdisplay colors has led to a uniform color standard. Examples of uniformcolor standards that have gained popularity are the sRGB color standardand the CIE color standard. These color standards define color points towhich all participating devices must conform. In order to conform to adefault color space, a device must perform a transform on the color thatit desires to display. That is, as a device prepares to display a color,it must first transform the color to the default color space before thedevice displays the desired color. Current color transformationtechniques, however, do not come without drawbacks.

[0007] One color transformation technique involves the use of a 3Dlookup table (3D LUT). This technique uses a table defining acorresponding output color for each input color. The 3D LUT technique,however, requires vast amounts of memory to store the entire table. Inaddition, the initial creation of the table can take a long period oftime.

[0008] Another color transformation technique involves the use of matrixcalculation. This technique uses a matrix function that is applied to aninput color to produce an output color. The matrix calculationtechnique, however, reduces the gamut of colors that can be produced bythe output device. In addition, this technique transforms the inputcolor into another color space before transforming the input color intothe default color space. This is computationally intensive andtime-consuming.

[0009] Accordingly, there exists a need to overcome these drawbacks withcurrent color transformations and to provide color transform to adefault color space.

SUMMARY OF THE INVENTION

[0010] A method, system and computer readable medium for transformingthree dimensional (3D) color information into a color standard isdescribed. In an embodiment of the present invention, a 3D cube definedby eight RGB color points representing the eight vertices of the 3D cubeis stored. Each of the eight points represents one of the colors: red,yellow, white, magenta, blue, black, green and cyan. In addition, eachof the eight points represents the difference between the capacity of adisplay and the color standard. The 3D cube is divided into sixtetrahedrons and the tetrahedron corresponding to an input RGB pixel isselected. A 3×3 matrix based on the vertices of the selected tetrahedronis calculated. The 3×3 matrix is then multiplied by the components ofthe input RGB pixel to produce an output RGB pixel conforming to thecolor standard.

[0011] Other objects, features, and advantages of the present inventionwill become apparent from the following detailed description. It shouldbe understood, however, that the detailed description and specificexamples, while indicating preferred embodiments of the presentinvention, are given by way of illustration only and variousmodifications may naturally be performed without deviating from thepresent invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The features and advantages of the present invention will becomemore apparent from the detailed description set forth below when takenin conjunction with the drawings in which like reference numbersindicate identical or functionally similar elements.

[0013]FIG. 1 is a block diagram illustrating the overall systemarchitecture of an embodiment of the present invention.

[0014]FIG. 2 is a flowchart depicting the overall operation and controlflow of one embodiment of the present invention.

[0015]FIG. 3 is a flowchart depicting the operation and control flow ofthe transformation process, in one embodiment of the present invention.

[0016]FIG. 4 is an illustration of a three dimensional cube representinga color space, in one embodiment of the present invention.

[0017]FIG. 5 is an illustration of one of six equal tetrahedrons withinthe three dimensional cube of FIG. 4, in one embodiment of the presentinvention.

[0018]FIG. 6 is a block diagram of an exemplary computer system usefulfor implementing the present invention.

[0019]FIG. 7 is an illustration of a divided three-dimensional cuberepresenting a color space, in one embodiment of the present invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

[0020] 1. Overview of the System

[0021] The present invention is described in terms of the exemplaryembodiments below. This is for convenience only and is not intended tolimit the application of the present invention. In fact, after readingthe following description, it will be apparent to one of ordinary skillin the relevant art(s) how to implement the present invention inalternative embodiments.

[0022]FIG. 1 is a block diagram illustrating the overall system 100architecture of an embodiment of the present invention. FIG. 1 showsgraphics 102, an Operating System (OS) 104, a device driver 106, outputdevice hardware 108, a transformer 110 and an output device 112.Graphics 102 are any images that can be shown on output device 112.Graphics 102 are produced by a computer application program such as avideo game, a broadcaster such as a television station, or any otherentity capable of producing an image and providing it to system 100 viaa communications path.

[0023] System 100 is a system for displaying graphics 102 on outputdevice 112. In an embodiment of the present invention, system 100 is atelevision or monitor for processing images that are received via aradio frequency, a satellite transmission, cable, telephone, Ethernet orany other communications path. In another embodiment of the presentinvention, system 100 is a personal computer (PC) (e.g., an IBM orcompatible PC workstation running the Microsoft Windows95/98/2000/CE/NT/XP operating system, a Macintosh computer running theMac OS operating system, or a SUN workstation running the UNIX operatingsystem), a Personal Digital Assistant (PDA) (e.g., a PalmPilot runningthe Palm OS operating system), a game console (e.g., a Microsoft Xboxconsole or a Sony Playstation 2 console) or interactive television. Inanother embodiment of the present invention, system 100 is a camcorder(e.g., a Sony MiniDV camcorder) or a mobile phone capable of displayingcolor images.

[0024] OS 104 is the operating system for system 100, i.e., thelow-level software which handles the interface to peripheral hardware,schedules tasks, allocates storage, and presents a default interface tothe user when no computer application program is running. In anembodiment of the present invention, OS 104 is the Microsoft Windows95/98/2000/CE/NT/XP operating system, the Macintosh operating system,the UNIX operating system, the LINUX operating system or any othersoftware capable of performing the tasks of an operating system. OS 104is implemented in hardware, software or any combination of the two.

[0025] Output device 112 is any device capable of displaying a colorimage. In an embodiment of the present invention, output device 112 is atelevision set, a computer monitor, a laptop display, a DVD playerdisplay, a PDA display, a camcorder display, a mobile phone display or aprinter. In the event that output device 112 is a video display unit,output device 112 is a Cathode Ray Tube (CRT), a Liquid Crystal Display(LCD), a plasma display, an organic Light Emitting Device (LED) or anyother electrical, optical, biological, chemical or mechanical devicecapable of displaying a color image. While only one output device 112 isshown in FIG. 1 for ease of explanation, the system 100 may support anynumber of output devices 112.

[0026] Output device hardware 108 is any hardware used in conjunctionwith output device 112 for displaying images. Output device hardware 108includes such hardware units as a graphics card (such as an NvidiaGeForce II graphics card), a graphics controller located within a CRT,or a printer controller. Device driver 106 is the unit capable ofcontrolling, or driving, the output device hardware 108. Device driver106 provides a level of abstraction between the output device hardware108 and the OS 104. As such, device driver 106 allows higher level OScalls to interact with functions and elements specific to output devicehardware 108. Device driver 106 is implemented in hardware, software orany combination of the two.

[0027] Transformer 110 represents the substantive functions of thepresent invention. Transformer 110 performs the transformation of aninput RGB pixel into an output RGB pixel conforming to the standardcolor space. The functions performed by transformer 110 are described ingreater detail below. Transformer 110 is implemented in hardware,software or any combination of the two. In an embodiment of the presentinvention, transformer 110 resides in OS 104, device driver 106, anyelement of output device hardware 108 or any combination of the above.In another embodiment of the present invention, transformer 110 is aseparate entity that interacts with OS 104, device driver 106, anyelement of output device hardware 108 or any combination of the above.

[0028] More detailed descriptions of system 100 components, as well astheir functionality and inter-functionality with other system 100components, are provided below. The operation system 100 of FIG. 1according to one embodiment of the present invention is shown in theflowcharts of FIGS. 2 and 3.

[0029] 2. Color Spaces

[0030] As is commonly known in the art, the RGB color space represents aclosed set of colors defined by RGB color points. The RGB color space isa system of defining colors by their Red, Green and Blue components.Thus, every color in the RGB color space is defined by three values—theRed component, the Green component and the Blue component. For example,the RGB color point X is defined by an RGB triplet denoted as:

X=(RedX, GreenX, BlueX)  (EQ:1)

[0031] where RedX is the red component of point X, GreenX is the greencomponent of point X and BlueX is the blue component of point X.

[0032] The RGB color space system lends itself to be conceptualized inthree dimensions (3D). This is because of the use of three coordinates(i.e., an RGB triplet) to define each RGB color point in the RBG colorspace system. This concept is shown in FIG. 4. FIG. 4 is an illustrationof a 3D cube 400 representing the RGB color space, in one embodiment ofthe present invention. FIG. 4 shows the eight color points generallyknown in the art to represent the boundaries of the RGB color space.Each of the eight color points defines a limit vertex of the 3D cube 400representing the RGB color space. The vertices of the 3D cube 400 aredenoted as “limit vertices” because these vertices define theboundaries, or limits, of the color space. Heretofore, limit verticesare referred to as “vertices.” 3D cube 400 has as its vertices: redvertex 402, yellow vertex 404, white vertex 416, magenta vertex 412,black vertex 414, green vertex 406, cyan vertex 408 and the blue vertex410. Each vertex is, in turn, defined by three color components. Theeight RGB color points defining the vertices of the 3D cube 400 aredefined below by RGB triplets:

Black vertex=(BlackR, BlackG, BlackB)

White vertex=(WhiteR, WhiteG, WhiteB)

Yellow vertex=(YellowR, YellowG, YellowB)

Red vertex=(RedR, RedG, RedB)

Green vertex=(GreenR, GreenG, GreenB)

Blue vertex=(BlueR, BlueG, BlueB)

Cyan vertex=(CyanR, CyanG, CyanB)

Magenta vertex=(MagentaR, MagentaG, MagentaB)  (EQ:2)

[0033] 3. Operation of the System

[0034]FIG. 2 is a flowchart depicting the overall operation and controlflow 200 of one embodiment of the present invention. Flow 200 describesgenerally the functions performed by transformer 110 in FIG. 1. Controlflow 200 begins with step 202 and flows directly to step 204.

[0035] In step 204, the difference, or delta, between the capacity ofthe output device and the color standard is determined. This steprequires testing to be performed on the output device 112. Typically,the testing consists of producing certain test color points on theoutput device 112 and measuring the color of the test color points witha device such as a calorimeter. These measurements are then compared tocontrol measurements. A control measurement is a measurement that istaken from a color-standard-conforming output device displaying the samecolor point. For each test color point, a difference, or delta, iscalculated between the measurements taken from the output device 112 andthe control measurement. More specifically, for each RGB component of atest color point, a delta is calculated between the measurements takenfrom the output device 112 and the control measurement. Thus, the resultof the testing is a set of eight color point deltas, with each colorpoint delta consisting of three components—a Red component, a Greencomponent and a Blue component.

[0036] In an embodiment of the present invention, a delta measurement istaken for each of the following test color points: red, yellow, white,magenta, blue, black, green and cyan. Specifically, a delta measurementis taken for each component of each test color point—a Red component, aGreen component and a Blue component. In an embodiment of the presentinvention, the delta measurements for each of the eight test colorpoints are then combined to define the vertices of a 3D cuberepresenting a color space symbolizing the delta between the capacity ofthe output device and the color standard. Heretofore, this 3D cube willbe referred to as the “delta 3D cube.” In an embodiment of the presentinvention, the eight RGB points defining the vertices of the delta 3Dcube are defined by RGB triplets as shown in equations (2). The mannerin which eight color points define the vertices of a 3D cuberepresenting a color space is defined in greater detail in FIG. 4 above.

[0037] In step 206, the delta measurements (i.e., the delta 3D cube)calculated in step 204 above are stored. The delta measurements arelater used by the transformer 110 when transforming RGB input pixels tooutput RGB pixels conforming to the color standard.

[0038] In step 208, an input RGB pixel is provided to transformer 110.The input RGB pixel is defined by the following RGB triplet:

Input RGB pixel=(InR, InG, InB)  (EQ:3)

[0039] In step 210, an output pixel conforming to the color standard andcorresponding to the input pixel is calculated in a transformationprocess. The output RGB pixel is defined by the following RGB triplet:

Output RGB pixel=(OutR, OutG, OutB)  (EQ:4)

[0040] Step 210 and the transformation process are described in greaterdetail in FIG. 3 below. Control flows back to step 208 as input pixelsare received and output pixels are calculated continuously bytransformer 110.

[0041] In an embodiment of the present invention, steps 204 and 206 arenot performed by transformer 110. In this embodiment, the deltameasurements are taken by a third party and stored in transformer 110 orin any other location to which transformer 110 has access. Transformer110 does not participate in the process of testing the output device 112and simply uses the results of the testing, i.e., the deltameasurements. In this embodiment, steps 204 and 206 are performed by athird party and control flows directly from step 202 to step 208.

[0042] 4. The Transformation Process

[0043]FIG. 3 is a flowchart depicting the operation and control flow ofthe transformation process, in one embodiment of the present invention.Flow 300 describes generally the transformation process performed bytransformer 110 in step 210 of FIG. 2. Control flow 300 begins with step302 and flows directly to step 304.

[0044] In step 304, the delta measurements calculated and stored insteps 204 and 206 of FIG. 2 above are retrieved by transformer 110.Specifically, transformer 110 retrieves eight RGB color points definingthe vertices of a delta 3D cube representing a color space symbolizingthe differences between the capacity of the output device and the colorstandard. An example of the eight RGB color points retrieved bytransformer 110 is shown in equations (2) above.

[0045] In step 306, the delta 3D cube represented by the eight retrievedRGB color points is divided into six equal tetrahedrons. A tetrahedronis a 3D shape defined by four points in 3D, where all of the points arenot coplanar. In step 306, the delta 3D cube is divided into sixtetrahedrons such that the following three conditions are met: I) alltetrahedrons are equal; II) each of the six tetrahedrons are defined byfour vertices of the 3D cube; and III) all tetrahedrons share theblack-to-white edge. The division of a 3D cube into six equaltetrahedrons in this fashion is described in greater detail below.

[0046]FIG. 5 is an illustration of one of the six equal tetrahedronswithin the 3D cube 400 shown in FIG. 4, in one embodiment of the presentinvention. Tetrahedron 500 shows that condition 11 is met because all ofits vertices are vertices of the 3D cube 400. Tetrahedron 500 has thefollowing vertices: red vertex 402, white vertex 416, yellow vertex 404and black vertex 414. Tetrahedron 500 also shows that condition III ismet because the black-to-white edge 420 is an edge of the tetrahedron.The remaining five tetrahedrons within 3D cube 400 are defined in thesame fashion. The six equal tetrahedrons within 3D cube 400 are definedbelow by their vertices:

Tetrahedron 1: (Red 402, Yellow 404, Black 414, White 416);

Tetrahedron 2: (Red 402, Magenta 412, Black 414, White 416);

Tetrahedron 3: (Green 406, Yellow 404, Black 414, White 416);

Tetrahedron 4: (Green 406, Cyan 408, Black 414, White 416);

Tetrahedron 5: (Blue 410, Magenta 412, Black 414, White 416);

Tetrahedron 6: (Blue 410, Cyan 408, Black 414, White 416);  (EQ:5)

[0047] In an embodiment of step 306, the delta 3D cube represented bythe eight retrieved RGB color points is divided into six tetrahedronswhich are not necessarily equal. In this embodiment, the delta 3D cubeis divided into six tetrahedrons such that only one condition is met:every point within the 3D cube is located within only one tetrahedron.

[0048] In step 308, transformer 110 determines which of the six equaltetrahedrons within the delta 3D cube (as defined in step 306)corresponds to the input RGB pixel provided in step 208 of FIG. 2 above.In one embodiment of the present invention, the tetrahedroncorresponding to the input RGB pixel is the tetrahedron in which theinput RGB pixel is located according to 3D cube 400 of FIG. 4. That is,if the 3D cube 400 were divided into six equal tetrahedrons as describedabove, the tetrahedron corresponding to the input RGB pixel is thetetrahedron within which the coordinates of the input RGB pixel lie. Inan embodiment of the present invention, the following inequalitiesdefine in which tetrahedron (of the delta 3D cube) the input RGB pixelis located, based on the coordinates of the input RGB pixel (defined inequation (3)):

Tetrahedron 1: InR>InG; InR>InB; InG>InB

Tetrahedron 2: InR>InG; InR>InB; InG<=InB

Tetrahedron 3: InR<=InG; InR>InB; InG>InB

Tetrahedron 4: InR<=InG; InR<=InB; InG>InB

Tetrahedron 5: InR>InG; InR<=InB; InG<=InB

Tetrahedron 6: InR<=InG; InR<=InB; InG<=InB  (EQ:6)

[0049] In step 310, a 3×3 matrix is calculated based on the vertices ofthe tetrahedron (within the delta 3D cube) that corresponds to the inputRGB pixel. In an embodiment of the present invention, the coefficientsof the first row of the 3×3 matrix are based on a first edge of thetetrahedron, the coefficients of the second row of the 3×3 matrix arebased on a second edge of the tetrahedron and the coefficients of thethird row of the 3×3 matrix are based on a third edge of thetetrahedron. Further, none of the coefficients of the 3×3 matrix arebased on the black-to-white-edge 420 of the tetrahedron.

[0050] In an embodiment of the present invention, the coefficients ofthe 3×3 matrix are based on the vertices of the delta 3D cube, asdefined by equations (2). For each tetrahedron in the delta 3D cube, thecoefficients of the 3×3 matrix are calculated as shown below: (EQ:7)Tetrahedron 1: x₁ = RedR − BlackR; y₁ = RedG − BlackG; z₁ = RedB −BlackB x₂ = YellowR − RedR; y₂ = YellowG − RedG; z₂ = YellowB − RedB x₃= WhiteR − YellowR; y₃ = WhiteG − YellowG; z₃ = WhiteB − YellowBTetrahedron 2: x₁ = RedR − BlackR; y₁ = RedG − BlackG; z₁ = RedB −BlackB x₂ = WhiteR − MagentaR; y₂ = WhiteG − MagentaG; z₂ = WhiteB −MagentaB x₃ = MagentaR − RedR; y₃ = MagentaG − RedG; z₃ = MagentaB −RedB Tetrahedron 3: x₁ = YellowR − GreenR; y₁ = YellowG − GreenG; z₁ =YellowB − GreenB x₂ = GreenR − BlackR; y₂ = GreenG − BlackG; z₂ = GreenB− BlackB x₃ = WhiteR − YellowR; y₃ = WhiteG − YellowG; z₃ = WhiteB −YellowB Tetrahedron 4: x₁ = WhiteR − CyanR; y₁ = WhiteG − CyanG; z₁ =WhiteB − CyanB x₂ = GreenR − BlackR; y₂ = GreenG − BlackG; z₂ = GreenB −BlackB x₃ = CyanR − GreenR; y₃ = CyanG − GreenG; z₃ = CyanB − GreenBTetrahedron 5: x₁ = MagentaR − BlueR; y₁ = MagentaG − BlueG; z₁=MagentaB − BlueB x₂ = WhiteR − MagentaR; y₂ = WhiteG − MagentaG; z₂ =WhiteB − MagentaB x₃ = BlueR − BlackR; y₃ = BlueG − BlackG; z₃ = BlueB −BlackB Tetrahedron 6: x₁ = WhiteR − CyanR; y₁ = WhiteG − CyanG; z₁ =WhiteB − CyanB x₂ = CyanR − BlueR; y₂ = CyanG − BlueG; z₂ = CyanB −BlueB x₃ = BlueR − BlackR; y₃ = BlueG − BlackG; z₃ = BlueB − BlackB

[0051] where x₁, y₁, and z₁ are the coefficients of the first row of the3×3 matrix, where x₂, y₂, and z₂ are the coefficients of the second rowof the 3×3 matrix, and where x₃, y₃, and z₃ are the coefficients of thethird row of the 3×3 matrix. The resulting 3×3 matrix is shown below:$\begin{matrix}\begin{pmatrix}x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2} \\x_{3} & y_{3} & z_{3}\end{pmatrix} & \left( \text{EQ: 8} \right)\end{matrix}$

[0052] In step 312, the 3×3 matrix calculated in step 310 above ismultiplied by the input RGB pixel (defined in equation (3) above). Thisstep is shown below: $\begin{matrix}{\begin{pmatrix}x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2} \\x_{3} & y_{3} & z_{3}\end{pmatrix}\begin{pmatrix}{InR} \\{InG} \\{InB}\end{pmatrix}} & \left( \text{EQ: 9} \right)\end{matrix}$

[0053] As explained above, the result of flow 300 is an output RGB pixeldefined in equation (4) above. The result of the multiplying step 312 isthree components, wherein each component represents a component of theoutput RGB pixel. This result is shown below:

OutR=InRx ₁ +InGy ₁ +InBz ₁

OutG=InRx ₂ +InGy ₂ +InBz ₂

OutB=InRx ₃ +InGy ₃ +InBz ₃  (EQ: 10)

[0054] In an embodiment of the present invention, the result of themultiplying step 312 is offset by the value of the input RGB pixel andby the value of the black vertex of the delta 3D cube. In thisembodiment, each component value of the output RGB pixel is offset bythe corresponding component of the input RGB pixel and the correspondingcomponent of the black vertex of the delta 3D cube. This result is shownbelow:

OutR=InR+InRx ₁ +InGy ₁ +InBz ₁+BlackR

OutG=InG+InRx ₂ +InGy ₂ +InBz ₂+BlackG

OutB=InR+InRx ₃ +InGy ₃ +InBz ₃+BlackB  (EQ:11)

[0055] where BlackR, BlackG and BlackB represents the RGB components ofthe black vertex of the delta 3D cube, as shown in the first equation ofequations (2).

[0056] 5. Features of the Present Invention

[0057] One feature of the present invention is the easy and quickstorage of the delta 3D cube. As explained above, the delta 3D cubeconsists only of a 3×3 matrix wherein each coefficient of the matrixconsists of three components. This relatively small amount ofinformation is the only data necessary to transform an input RGB pixelinto an output RGB pixel conforming to a color standard. This is animprovement over the large 3D look up table used by the 3D LUT tabletechnique of the prior art described above. The small size of the delta3D cube of the present invention results in an efficient colortransformation.

[0058] Another feature of the present invention is the lack of areduction in the gamut of colors produced by the transformation in theoutput device. In contrast to the matrix multiplication techniquesavailable in the prior art, the output of the system of the presentinvention encompasses the entire gamut of colors that can be produced bythe input RGB pixels. This feature results in greater accuracy of colorsthat are produced in the output device by the transformation technique.

[0059] Yet another feature of the present invention is the mapping ofthe input RGB pixel directly into the color space of the color standard.In contrast to the matrix multiplication techniques available in theprior art, the system of the present invention does not map a input RGBpixel into an intermediary color space before mapping the input RGBpixel into the color space of the color standard. This feature resultsin fewer calculations and less computing time. This leads to greaterefficiency in performing the transformation function.

[0060] Yet another feature of the present invention is a reduction incomputing power necessary for performing the transformation, in contrastto the matrix multiplication techniques available in the prior art. Instep 308 of flow 300, the transformation process of the presentinvention requires the calculation of the simple (and computationallyinexpensive) inequalities of equations (6). Next, in step 310,computationally inexpensive subtractions of equations (7) arecalculated. Lastly, in step 312, computationally inexpensive additionsand multiplications (i.e., matrix multiplication) of equation (10) arecalculated. This feature results in fewer calculations and lesscomputing time. This leads to greater efficiency in performing thetransformation function.

[0061] In another embodiment of the transformation process of thepresent invention, the 3D cube 400 is divided into eight equal cubes,each of which is then subdivided into six equal tetrahedrons. Thisembodiment provides an alternative to the transformation process of flow300 of FIG. 3. In this embodiment, steps 302 and 304 of flow 300 areexecuted. However, 3D cube 400 is divided into eight equal cubes beforestep 306. Each of the eight cubes is then subdivided into six equaltetrahedrons, similar to step 306. Subsequently, steps 308 to 314 areexecuted. In this embodiment, an additional number of calculations areperformed (compared to flow 300), however greater accuracy andresolution results.

[0062] In yet other embodiments of the transformation process of thepresent invention, the 3D cube 400 is divided into any number of equalcubes, each of which is then subdivided into six equal tetrahedrons.This is proceeded with steps similar to steps 306 to 314.

[0063] Yet another feature of the present invention is the decrease inthe number of values to be stored, in contrast to the 3D LUT techniqueof the prior art. The following method of storing the RGB point valuesrepresenting a 3D cube (as in equations (2)) or a group of 3D cubesrequires the storage of a reduced number of values. FIG. 7 is anillustration of a divided three-dimensional cube 700 representing acolor space, in an embodiment of the present invention. 3D cube 700 issimilar to 3D cube 400 in that eight RGB points (or limit vertices) areused to represent a color space. However, 3D cube 700 shows the 3D cubeis divided into eight sub-cubes during the transformationprocess—whereas 3D cube 400 is not divided into smaller cubes. 3D cube700 represents the embodiment of the present invention, wherein a 3Dcube is divided into eight equal cubes, each of which is then subdividedinto six equal tetrahedrons (as described above).

[0064] The variable “k” represents the number of points necessary torepresent a 3D cube in one of the three dimensions. Referring to 3D cube400, it can be shown that any dimension (i.e., any line consisting of anedge of the 3D cube) can be minimally defined by two points—the twoendpoints of any edge. Referring to 3D cube 700 (which has been dividedinto eight sub-cubes), it can be shown that any dimension (i.e., anyline consisting of an edge of the 3D cube) can be minimally defined bythree points—the two endpoints of any edge, plus an additional midpointof the edge, at the separation between two sub-cubes. Thus, for one 3Dcube, two points are necessary to represent the 3D cube in onedimension. For a 3D cube that has been subdivided into eight equalcubes, three points are necessary to represent the subdivided 3D cube inone dimension. Further, it is shown that “k” is proportional to thenumber of vertices for any 3D cube (subdivided or non-subdivided):

number of vertices=k³  (EQ:12)

[0065] Moreover, it is shown that “k” is proportional to the number of(sub) cubes represented:

number of (sub) cubes=(k−1)³.  (EQ:13)

[0066] For example, in an embodiment where a non-divided 3D cube is usedfor the transformation, k=2. Therefore, the number of vertices for thatcube is (2)³=8 and the number of cubes represented is (2−1)³=1. Further,for an embodiment where one 3D cube divided into eight sub-cubes is usedfor the transformation, k=3. Therefore, the number of vertices for thatdivided cube is (3)³=27 and the number of cubes represented is (3−1)³=8.Finally, for an embodiment where one 3D cube divided into sixty foursub-cubes is used for the transformation, k=5. Therefore, the number ofvertices for that subdivided cube is (5)³=125 and the number of cubesrepresented is (5−1)³=64. This process can be used for any number ofsubdivisions of the 3D cube.

[0067] The prior art shows that a 3D cube is typically stored by storingthe vertices of the 3D cube. For a non-divided 3D cube, the number ofvertices stored is eight. However, for a divided 3D cube, the number ofvertices stored is the number of sub-cubes multiplied by eight, thus:

number of vertices stored=8*(k−1)³  (EQ:14)

[0068] In contrast, in the present invention, the number of verticesstored is given by equation (12). Thus:

number of vertices stored=k³  (EQ: 15)

[0069] Comparing equation (14) to equation (15), it is shown that forvalues of k>2, the resulting number of vertices is greater in equation(14) than in equation (15). Therefore, it is shown that method of thepresent invention for storing the vertex values representing a divided3D cube requires the storage of a reduced number of values over themethod of the prior art.

[0070] Yet another feature of the present invention is the moreefficient retrieval of stored values, in contrast to the prior art. Thefollowing method of retrieving requires a reduced number of bits.Typically, the representation of N number of values (wherein N is a baseten number) requires a number of bits x, such that x is defined by:

2^(x−1) <N<2^(x)  (EQ:16)

[0071] In an embodiment of the present invention wherein the 3D cube isdivided into eight sub-cubes, the determination of the location of theinput RGB pixel within the divided cube conventionally requires fourbits (referring to equation 16). In an embodiment of the presentinvention, the number of bits necessary for this determination isreduced. Using the most significant bit of each of the three componentsof the input RGB pixel, the location of the input RGB pixel within the3D cube can be determined. The first bit is used to determine whetherthe pixel is located within the top four sub-cubes or the bottom foursub-cubes. The second bit is used to determine whether the pixel islocated within the right two sub-cubes, or the left two sub-cubes, ofthe remaining four sub-cubes. The third bit is used to determine whetherthe pixel is located within the front sub-cube, or the back sub-cube, ofthe remaining two sub-cubes. In this fashion, a reduced number of bits(three bits as opposed to four bits) is used to retrieve the desiredinformation. This retrieval method is also used upon retrieval of thedelta cube in step 304 of FIG. 3.

[0072] 6. Exemplary Implementations

[0073] The present invention (i.e., system 100, flows 200, 300 or anypart thereof) is implemented using hardware, software or a combinationthereof and is implemented in one or more computer systems or otherprocessing systems. An example of a computer system 600 is shown in FIG.6. The computer system 600 represents any single or multi-processorcomputer. In conjunction, single-threaded and multi-threadedapplications are used. Unified or distributed memory systems are used.

[0074] In one example, the present invention is implemented in amulti-platform (platform independent) programming language such as Java,programming language/structured query language (PL/SQL), hyper-textmark-up language (HTML), practical extraction report language (PERL),Flash programming language, common gateway interface/structured querylanguage (CGI/SQL) or the like. Java-enabled and JavaScript-enabledbrowsers are used, such as, Netscape, HotJava, and Microsoft Explorerbrowsers. Active content web pages can be used. Such active content webpages include Java applets or ActiveX controls, or any other activecontent technology developed now or in the future. The presentinvention, however, is not intended to be limited to Java, JavaScript,or their enabled browsers, and are implemented in any programminglanguage and browser, developed now or in the future, as would beapparent to a person skilled in the relevant art(s) given thisdescription.

[0075] In another example, the present invention is implemented using ahigh-level programming language (e.g., C++) and applications written forthe Microsoft Windows NT or SUN OS environments. It will be apparent topersons skilled in the relevant art(s) how to implement the invention inalternative embodiments from the teachings herein.

[0076] Computer system 600 includes one or more processors, such asprocessor 604. One or more processors 604 execute software implementingthe routines of the invention, described above. Each processor 604 isconnected to a communication infrastructure 602 (e.g., a communicationsbus, cross-bar, or network). Various software embodiments are describedin terms of this exemplary computer system. After reading thisdescription, it will become apparent to a person skilled in the relevantart how to implement the invention using other computer systems and/orcomputer architectures.

[0077] Computer system 600 includes an output device interface 608 thatforwards graphics, text, and other data from the communicationinfrastructure 602 (or from a frame buffer not shown) for display on theoutput device 610.

[0078] Computer system 600 also includes a main memory 606, preferablyrandom access memory (RAM), and also includes a secondary memory 612.The secondary memory 612 includes, for example, a hard disk drive 614and/or a removable storage drive 616, representing a floppy disk drive,a magnetic tape drive, an optical disk drive, etc. The removable storagedrive 616 reads from and/or writes to a removable storage unit 618 in awell known manner. Removable storage unit 618 represents a floppy disk,magnetic tape, optical disk, etc., which is read by and written to byremovable storage drive 616. As will be appreciated, the removablestorage unit 618 includes a computer usable storage medium having storedtherein computer software and/or data.

[0079] In alternative embodiments, secondary memory 612 includes othersimilar means for allowing computer programs or other instructions to beloaded into computer system 600. Such means include, for example, aremovable storage unit 622 and an interface 620. Examples include aprogram cartridge and cartridge interface (such as that found in videogame console devices), a removable memory chip (such as an EPROM, orPROM) and associated socket, and other removable storage units 622 andinterfaces 620 which allow software and data to be transferred from theremovable storage unit 622 to computer system 600.

[0080] Computer system 600 also includes a communications interface 624.Communications interface 624 allows software and data to be transferredbetween computer system 600 and external devices via communications path626. Examples of communications interface 624 include a modem, a networkinterface (such as Ethernet card), a communications port, interfacesdescribed above, etc. Software and data transferred via communicationsinterface 624 are in the form of signals which are electronic,electromagnetic, optical or other signals capable of being received bycommunications interface 624, via communications path 626. Note thatcommunications interface 624 provides a means by which computer system600 interfaces to a network such as the Internet.

[0081] The present invention is implemented using software running (thatis, executing) in an environment similar to that described above. Inthis document, the term “computer program product” is used to generallyrefer to removable storage unit 618, a hard disk installed in hard diskdrive 614, or a carrier wave carrying software over a communication path626 (wireless link or cable) to communication interface 624. A computeruseable medium includes magnetic media, optical media, or otherrecordable media, or media that transmits a carrier wave or othersignal. These computer program products are means for providing softwareto computer system 600.

[0082] Computer programs (also called computer control logic) are storedin main memory 606 and/or secondary memory 612. Computer programs arealso received via communications interface 624. Such computer programs,when executed, enable the computer system 600 to perform the features ofthe present invention as discussed herein. In particular, the computerprograms, when executed, enable the processor 604 to perform features ofthe present invention. Accordingly, such computer programs representcontrollers of the computer system 600.

[0083] The present invention is implemented as control logic insoftware, firmware, hardware or any combination thereof. In anembodiment where the invention is implemented using software, thesoftware is stored in a computer program product and loaded intocomputer system 600 using removable storage drive 606, hard disk drive614, or interface 620. Alternatively, the computer program product isdownloaded to computer system 600 over communications path 626. Thecontrol logic (software), when executed by the one or more processors604, causes the processor(s) 604 to perform functions of the inventionas described herein.

[0084] In another embodiment, the invention is implemented primarily infirmware and/or hardware using, for example, hardware components such asapplication specific integrated circuits (ASICs). Implementation of ahardware state machine so as to perform the functions described hereinwill be apparent to persons skilled in the relevant art(s) from theteachings herein. In one embodiment, the present invention isimplemented in the ST Microelectronics ADE 3250 integrated circuit. Thisintegrated circuit is an all-inclusive display engine for high qualitydual input IQPanel applications with the additional option for video(digital CCIR656 YUV) input. The ADE 3250 integrates a programmable LCDtiming controller for a flexible IQPanel or smart panel design.

[0085] 7. Conclusion

[0086] While various embodiments of the present invention have beendescribed above, it should be understood that they have been presentedby way of example, and not limitation. It will be apparent to personsskilled in the relevant art(s) that various changes in form and detailare made therein without departing from the spirit and scope of theinvention. Thus the present invention should not be limited by any ofthe above-described exemplary embodiments, but should be defined only inaccordance with the following claims and their equivalents.

What is claimed is:
 1. A method for transforming color information forconformance with a color standard, comprising the steps of: storing aplurality of RGB color points representing each vertex of at least onethree dimensional cube, wherein each of the RGB color points representsa difference between a capacity of an output device and a selected colorstandard; dividing the three dimensional cube into a plurality oftetrahedrons; determining which of the plurality of tetrahedronscorresponds to an input RGB pixel with an R, G and B component;calculating a 3×3 matrix based on each vertex of a tetrahedroncorresponding to the input RGB pixel; and multiplying the 3×3 matrix bythe components of the input RGB pixel, wherein an output RGB pixelconforming to the selected color standard is calculated.
 2. The methodof claim 1, wherein the step of storing includes storing eight RGB colorpoints representing each limit vertex of the three dimensional cube,wherein the eight RGB color points represent the following colors: red,yellow, white, magenta, blue, black, green and cyan.
 3. The method ofclaim 2, wherein the step of dividing includes: dividing the threedimensional cube into six tetrahedrons, wherein each of the sixtetrahedrons is defined by four limit vertices of the three dimensionalcube.
 4. The method of claim 3, wherein the step of dividing includessix tetrahedrons defined by the following limit vertices of: white, red,yellow, black; white, yellow, green, black; white, green, cyan, black;white, cyan, blue, black; white, magenta, blue, black; and white,magenta, red, black.
 5. The method of claim 4, wherein the step ofcalculating includes: calculating a 3×3 matrix based on each limitvertex of a tetrahedron corresponding to the input RGB pixel, whereineach coefficient of the first row of the 3×3 matrix are based on a firstedge of the tetrahedron, wherein each coefficient of the second row ofthe 3×3 matrix are based on a second edge of the tetrahedron, whereineach coefficient of the third row of the 3×3 matrix are based on a thirdedge of the tetrahedron, and wherein each coefficient of the first,second and third row of the 3×3 matrix are not based on a black-to-whiteedge of the tetrahedron.
 6. The method of claim 2, wherein the step ofmultiplying includes: multiplying the 3×3 matrix by the components ofthe input RGB pixel according to the formula: $\begin{pmatrix}x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2} \\x_{3} & y_{3} & z_{3}\end{pmatrix}\begin{pmatrix}R \\G \\B\end{pmatrix}$

wherein x₁, y₁, z₁, x₂, y₂, z₂, x₃, y₃ and z₃ are the coefficients ofthe 3×3 matrix and R, G and B represent the components of the input RGBpixel.
 7. The method of claim 6, wherein the step of multiplying furtherincludes: offsetting a result of the step of multiplying by thecomponents of the input RGB pixel and by the components of the blacklimit vertex of the three dimensional cube.
 8. A computer readablemedium including computer instructions for transforming colorinformation into a standard color space, the computer instructionscomprising instructions for: storing a plurality of RGB color pointsrepresenting each vertex of at least one three dimensional cube, whereineach of the RGB color points represents a difference between a capacityof an output device and a selected color standard; dividing the threedimensional cube into a plurality of tetrahedrons; determining which ofthe plurality of tetrahedrons corresponds to an input RGB pixel with anR, G and B component; calculating a 3×3 matrix based on each vertex of atetrahedron corresponding to the input RGB pixel; and multiplying the3×3 matrix by the components of the input RGB pixel, wherein an outputRGB pixel conforming to the selected color standard is calculated. 9.The computer readable medium of claim 8, wherein the instructions forstoring include storing eight RGB color points representing each limitvertex of the three dimensional cube, wherein the eight RGB color pointsrepresent the following colors: red, yellow, white, magenta, blue,black, green and cyan.
 10. The computer readable medium of claim 9,wherein the instructions for dividing include: dividing the threedimensional cube into six tetrahedrons, wherein each of the sixtetrahedrons is defined by four limit vertices of the three dimensionalcube.
 11. The computer readable medium of claim 10, wherein theinstructions for dividing include six tetrahedrons defined by thefollowing limit vertices of: white, red, yellow, black; white, yellow,green, black; white, green, cyan, black; white, cyan, blue, black;white, magenta, blue, black; and white, magenta, red, black.
 12. Thecomputer readable medium of claim 8, wherein the instructions forcalculating include: calculating a 3×3 matrix based on each limit vertexof a tetrahedron corresponding to the input RGB pixel, wherein eachcoefficient of the first row of the 3×3 matrix are based on a first edgeof the tetrahedron, wherein each coefficient of the second row of the3×3 matrix are based on a second edge of the tetrahedron, wherein eachcoefficient of the third row of the 3×3 matrix are based on a third edgeof the tetrahedron, and wherein each coefficient of the first, secondand third row of the 3×3 matrix are not based on a black-to-white edgeof the tetrahedron.
 13. The computer readable medium of claim 9, whereinthe instructions for multiplying include: multiplying the 3×3 matrix bythe components of the input RGB pixel according to the formula:$\begin{pmatrix}x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2} \\x_{3} & y_{3} & z_{3}\end{pmatrix}\begin{pmatrix}R \\G \\B\end{pmatrix}$

wherein x₁, y₁, z₁, x₂, y₂, z₂, x₃, y₃ and z₃ are the coefficients ofthe 3×3 matrix and R, G and B represent the components of the input RGBpixel.
 14. The computer readable medium of claim 13, wherein theinstructions for multiplying further include: offsetting a result of theinstructions for multiplying by the components of the input RGB pixeland by the components of the black limit vertex of the three dimensionalcube.
 15. A system for transforming color information into a standardcolor space, comprising: means for storing a plurality of RGB colorpoints representing each vertex of at least one three dimensional cube,wherein each of the RGB color points represents a difference between acapacity of an output device and a selected color standard; means fordividing the three dimensional cube into a plurality of tetrahedrons;means for determining which of the six tetrahedrons corresponds to aninput RGB pixel with an R, G and B component; means for calculating a3×3 matrix based on each vertex of a tetrahedron corresponding to theinput RGB pixel; and means for multiplying the 3×3 matrix by thecomponents of the input RGB pixel, wherein an output RGB pixelconforming to the selected color standard is calculated.
 16. The systemof claim 15, wherein the means for storing includes storing eight RGBcolor points representing each limit vertex of the three dimensionalcube, wherein the eight RGB color points represent the following colors:red, yellow, white, magenta, blue, black, green and cyan.
 17. The systemof claim 16, wherein the means for dividing includes: means for dividingthe three dimensional cube into six tetrahedrons, wherein each of thesix tetrahedrons is defined by four limit vertices of the threedimensional cube.
 18. The system of claim 17, wherein the means fordividing includes six tetrahedrons defined by the following limitvertices of: white, red, yellow, black; white, yellow, green, black;white, green, cyan, black; white, cyan, blue, black; white, magenta,blue, black; and white, magenta, red, black.
 19. The system of claim 18,wherein the means for calculating includes: means for calculating a 3×3matrix based on each limit vertex of a tetrahedron corresponding to theinput RGB pixel, wherein each coefficient of the first row of the 3×3matrix are based on a first edge of the tetrahedron, wherein eachcoefficient of the second row of the 3×3 matrix are based on a secondedge of the tetrahedron, wherein each coefficient of the third row ofthe 3×3 matrix are based on a third edge of the tetrahedron, and whereineach coefficient of the first, second and third row of the 3×3 matrixare not based on a black-to-white edge of the tetrahedron.
 20. Thesystem of claim 16, wherein the means for multiplying includes: meansfor multiplying the 3×3 matrix by the components of the input RGB pixelaccording to the formula: $\begin{pmatrix}x_{1} & y_{1} & z_{1} \\x_{2} & y_{2} & z_{2} \\x_{3} & y_{3} & z_{3}\end{pmatrix}\begin{pmatrix}R \\G \\B\end{pmatrix}$

wherein x₁, y₁, z₁, x₂, y₂, z₂, x₃, y₃ and z₃ are the coefficients ofthe 3×3 matrix and R, G and B represent the components of the input RGBpixel.
 21. A system for transforming color information into a standardcolor space, comprising: an interface to storage for storing a pluralityof RGB color points representing each vertex of at least one threedimensional cube, wherein each of the RGB color points represents adifference between a capacity of an output device and a selected colorstandard; a processor configured to divide the three dimensional cubeinto a plurality of tetrahedrons; a processor configured to determinewhich of the plurality of tetrahedrons corresponds to an input RGB pixelwith an R, G and B component; a processor configured to calculate a 3×3matrix based on each vertex of a tetrahedron corresponding to the inputRGB pixel; and a processor configured to multiply the 3×3 matrix by thecomponents of the input RGB pixel, wherein an output RGB pixelconforming to the selected color standard is calculated.
 22. The systemof claim 21, wherein the system is implemented in the STMicroelectronics ADE 3250 integrated circuit.